#include "CEvtVar.h"
CEvtVar::CEvtVar() {

}
CEvtVar::~CEvtVar() {

}

//超时返回-1,正常返回0
int CEvtVar::wait(int Nms) {
	bool status = false;
	std::unique_lock<std::mutex> mlocker(m_mtex);
	m_flag = false;
	if (Nms <= 0)
	{
		m_condvar.wait(mlocker, [&]() {return m_flag; });
		return 0;
	}

	status = m_condvar.wait_for(mlocker, std::chrono::milliseconds(Nms), [&]() {return m_flag; });
	if (status) 
	{
		m_flag = false;
		return 0;
	}
		
	return -1;
}
void CEvtVar::notify() {
	{
		std::lock_guard<std::mutex> mlocker(m_mtex);
		m_flag = true;
	}
	m_condvar.notify_all();
}